package it.csi.finregio.finreges.dto;

import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

public class EnteScheda implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3998179313166628302L;

	private String idEnteScheda;
	private Scheda scheda;
	private Ente ente;
	private Direzione direzione;
	private Settore settore;
	private String email1;
	private String email2;
	private String email3;
	private String website1;
	private String website2;
	private String website3;
	private String altreInfo;
	private String note;
	private String modalitaInserimento;

	private String progDirezione;
	private String idEnte;
	private String progSettore;

	public String getIdEnteScheda() {
		return idEnteScheda;
	}

	public void setIdEnteScheda(String idEnteScheda) {
		this.idEnteScheda = idEnteScheda;
	}

	public Scheda getScheda() {
		return scheda;
	}

	public void setScheda(Scheda scheda) {
		this.scheda = scheda;
	}

	public Ente getEnte() {
		return ente;
	}

	public void setEnte(Ente ente) {
		this.ente = ente;
	}

	public Direzione getDirezione() {
		return direzione;
	}

	public void setDirezione(Direzione direzione) {
		this.direzione = direzione;
	}

	public Settore getSettore() {
		return settore;
	}

	public void setSettore(Settore settore) {
		this.settore = settore;
	}

	public String getEmail1() {
		return email1;
	}

	public void setEmail1(String email1) {
		this.email1 = email1;
	}

	public String getEmail2() {
		return email2;
	}

	public void setEmail2(String email2) {
		this.email2 = email2;
	}

	public String getEmail3() {
		return email3;
	}

	public void setEmail3(String email3) {
		this.email3 = email3;
	}

	public String getWebsite1() {
		return website1;
	}

	public void setWebsite1(String website1) {
		this.website1 = website1;
	}

	public String getWebsite2() {
		return website2;
	}

	public void setWebsite2(String website2) {
		this.website2 = website2;
	}

	public String getWebsite3() {
		return website3;
	}

	public void setWebsite3(String website3) {
		this.website3 = website3;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return new ToStringBuilder(this).append("email2", this.email2).append(
				"scheda", this.scheda).append("website3", this.website3)
				.append("direzione", this.direzione).append("email3",
						this.email3).append("ente", this.ente).append(
						"website2", this.website2).append("website1",
						this.website1).append("settore", this.settore).append(
						"idEnteScheda", this.idEnteScheda).append("email1",
						this.email1).toString();
	}

	public String getDescrizioneEstesa(){
		StringBuffer sb = new StringBuffer();
		if(ente!=null){
			sb.append(ente.getDescrizione());
		}
		if(direzione!=null){
			if(!sb.toString().equals("")){
				sb.append(" - ");
			}
			sb.append(direzione.getDescrizione());
		}
		if(settore!=null){
			if(!sb.toString().equals("")){
				sb.append(" - ");
			}
			sb.append(settore.getDescrizione());
		}
		return sb.toString();
	}
	/**
	 * @see java.lang.Object#equals(Object)
	 */
	public boolean equals(Object object) {
		if(object==null){
			return false;
		}
		if (!(object instanceof EnteScheda)) {
			return false;
		}
		EnteScheda rhs = (EnteScheda) object;
		if(idEnteScheda!=null && rhs.getIdEnteScheda()!=null){
			return idEnteScheda.equals(rhs.getIdEnteScheda());
		}
		if(getDescrizioneEstesa()!=null && rhs.getDescrizioneEstesa()!=null){
			return getDescrizioneEstesa().equals(rhs.getDescrizioneEstesa());
		}
		return new EqualsBuilder().appendSuper(super.equals(object)).append(
				this.scheda, rhs.scheda).append(this.website2, rhs.website2)
				.append(this.email1, rhs.email1).append(this.direzione,
						rhs.direzione).append(this.email3, rhs.email3).append(
						this.website1, rhs.website1)
				.append(this.ente, rhs.ente)
				.append(this.website3, rhs.website3).append(this.email2,
						rhs.email2).append(this.settore, rhs.settore).append(
						this.idEnteScheda, rhs.idEnteScheda).isEquals();
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	public int hashCode() {
		return new HashCodeBuilder(2072725541, 1501105907).appendSuper(
				super.hashCode()).append(this.scheda).append(this.website2)
				.append(this.email1).append(this.direzione).append(this.email3)
				.append(this.website1).append(this.ente).append(this.website3)
				.append(this.email2).append(this.settore).append(
						this.idEnteScheda).toHashCode();
	}

	public String getAltreInfo() {
		return altreInfo;
	}

	public void setAltreInfo(String altreInfo) {
		this.altreInfo = altreInfo;
	}

	public String getNote() {
		return note;
	}

	public void setNote(String note) {
		this.note = note;
	}

	public String getProgDirezione() {
		return progDirezione;
	}

	public void setProgDirezione(String idDirezione) {
		this.progDirezione = idDirezione;
	}

	public String getIdEnte() {
		return idEnte;
	}

	public void setIdEnte(String idEnte) {
		this.idEnte = idEnte;
	}

	public String getProgSettore() {
		return progSettore;
	}

	public void setProgSettore(String idSettore) {
		this.progSettore = idSettore;
	}

	public String getModalitaInserimento() {
		return modalitaInserimento;
	}

	public void setModalitaInserimento(String modalitaInserimento) {
		this.modalitaInserimento = modalitaInserimento;
	}

}
